The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
In networked environments, it is important to have information detailing a state of various entities in the networked environment. Entities may include routers, switches, and other elements of internetworking infrastructure. Monitoring entities, including monitoring applications, typically obtain updates from the entities being monitored using a pull-based approach or a push-based approach. In pull-based approaches, the monitoring application explicitly polls the monitored entity every time it desires more data such as an update of the state. The monitored entity is reactive. If the monitoring entity stops polling, the monitored entity will not send any more data.
Push-based approaches follow a publisher/subscriber paradigm where each monitored entity is a publisher, and the monitoring entity is the subscriber. The subscriber conceptually specifies what data it is interested in, and how it wants to receive it, and thus subscribes to specified updates. The publisher sends or publishes data or updates to the subscriber based upon the specification.
In pull-based approaches using polling, the monitoring entity has complete control on usage of resources, such as the amount of memory or disk storage used to store updates. If the monitoring entity is running out of storage or updates, then the monitoring entity can request fewer updates or stop requesting updates. In many cases, successive requests made by the monitoring entity may turn out to be redundant and wasteful, because the underlying data did not change from one request to the other. Polling solutions offer challenges with regards to resilience and synchronization of data, which requires timing that is precisely synchronized across multiple devices. Synchronized timing is needed to ensure data is retrieved at the same instance in time to make it comparable, and to avoid issues with regard to jitter and delay variations of requests which might cause data to be aggregated over intervals that are not evenly spaced. And, when the state of the monitored entity does not change, multiple polls result in no additional information for the monitoring entity.
Push-based approaches can be more efficient in resource usage by avoiding redundant requests from the monitoring entity. Further, no separate message is sent to initiate each message exchange. Push-based approaches can be more timely, as changes can be pushed when they occur without needing to wait for the next polling interval. Synchronization is greatly facilitated and robustness is improved as missing or delayed polling requests are a non-issue. All these properties make pushing a highly desirable approach.
In “on-change” or periodic push-based approaches, subscribers are notified when the state of the monitored entity changes, or when it changes significantly. “On-change” approaches may be more efficient in resource usage since each message exchange provides the monitoring entity with additional information. A challenge of such approaches is that under certain scenarios, a high rate of updates can result which in the worst case can overwhelm a subscriber and lead do problems such as indiscriminate dropping of data. For example, a subscription can concern a “subtree”, and a subscriber may not always know the number of data items in the subtree, hence the volume of data to expect from updates. Likewise, subscriptions can involve filters, and subscribers may not be able to predict in advance how many nodes or data items meet the filter criteria.